home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / urlmon.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-02-09  |  21.2 KB  |  429 lines

  1. unit UrlMon;
  2.  
  3. interface
  4.  
  5. uses Windows, ActiveX;
  6.  
  7. const
  8.   UseUI: Boolean = True;
  9.  
  10.   BINDVERB_GET       = $00000000;       // default action
  11.   BINDVERB_POST      = $00000001;       // post verb
  12.   BINDVERB_PUT       = $00000002;       // put verb
  13.   BINDVERB_CUSTOM    = $00000003;       // custom verb
  14.  
  15.   BINDINFOF_URLENCODESTGMEDDATA   = $00000001;       // url encode the stgmed data
  16.   BINDINFOF_URLENCODEDEXTRAINFO   = $00000002;       // url encode the extra info
  17.  
  18.   // flags that describe the type of transaction that caller wants
  19.   BINDF_ASYNCHRONOUS              = $00000001;
  20.   BINDF_ASYNCSTORAGE              = $00000002;
  21.   BINDF_NOPROGRESSIVERENDERING    = $00000004;
  22.   BINDF_OFFLINEOPERATION          = $00000008;
  23.   BINDF_GETNEWESTVERSION          = $00000010;
  24.   BINDF_NOWRITECACHE              = $00000020;
  25.   BINDF_PULLDATA                  = $00000080;
  26.   BINDF_IGNORESECURITYPROBLEM     = $00000100;
  27.   BINDF_RESYNCHRONIZE             = $00000200;
  28.   BINDF_HYPERLINK                 = $00000400;
  29.   BINDF_INLINESGETNEWESTVERSION   = $10000000; //  need to remove from SDK
  30.   BINDF_INLINESRESYNCHRONIZE      = $20000000; // need to remove from SDK
  31.   BINDF_CONTAINER_NOWRITECACHE    = $40000000; // need to remove from SDK
  32.   BINDF_DONTUSECACHE   = BINDF_GETNEWESTVERSION;
  33.   BINDF_DONTPUTINCACHE = BINDF_NOWRITECACHE;
  34.   BINDF_NOCOPYDATA     = BINDF_PULLDATA;
  35.  
  36.   // Data notification flags
  37.   BSCF_FIRSTDATANOTIFICATION          = $00000001;
  38.   BSCF_INTERMEDIATEDATANOTIFICATION   = $00000002;
  39.   BSCF_LASTDATANOTIFICATION           = $00000004;
  40.  
  41.   BINDSTATUS_FINDINGRESOURCE          = 1;
  42.   BINDSTATUS_CONNECTING               = 2;
  43.   BINDSTATUS_REDIRECTING              = 3;
  44.   BINDSTATUS_BEGINDOWNLOADDATA        = 4;
  45.   BINDSTATUS_DOWNLOADINGDATA          = 5;
  46.   BINDSTATUS_ENDDOWNLOADDATA          = 6;
  47.   BINDSTATUS_BEGINDOWNLOADCOMPONENTS  = 7;
  48.   BINDSTATUS_INSTALLINGCOMPONENTS     = 8;
  49.   BINDSTATUS_ENDDOWNLOADCOMPONENTS    = 9;
  50.   BINDSTATUS_USINGCACHEDCOPY          = 10;
  51.   BINDSTATUS_SENDINGREQUEST           = 11;
  52.   BINDSTATUS_CLASSIDAVAILABLE         = 12;
  53.   BINDSTATUS_MIMETYPEAVAILABLE        = 13;
  54.   BINDSTATUS_CACHEFILENAMEAVAILABLE   = 14;
  55.  
  56.   SZ_URLCONTEXT: PWideChar = 'URL Context';
  57.   SZ_ASYNC_CALLEE: PWideChar = 'AsyncCallee';
  58.   MKSYS_URLMONIKER = 6;
  59.  
  60.   { URLMON-specific defines for UrlMkSetSessionOption() above }
  61.   URLMON_OPTION_USERAGENT     = $10000001;
  62.  
  63.   CF_NULL                     = 0;
  64.   CFSTR_MIME_NULL             = 0;
  65.   CFSTR_MIME_TEXT             = 'text/plain';
  66.   CFSTR_MIME_RICHTEXT         = 'text/richtext';
  67.   CFSTR_MIME_X_BITMAP         = 'image/x-xbitmap';
  68.   CFSTR_MIME_POSTSCRIPT       = 'application/postscript';
  69.   CFSTR_MIME_AIFF             = 'audio/aiff';
  70.   CFSTR_MIME_BASICAUDIO       = 'audio/basic';
  71.   CFSTR_MIME_WAV              = 'audio/wav';
  72.   CFSTR_MIME_X_WAV            = 'audio/x-wav';
  73.   CFSTR_MIME_GIF              = 'image/gif';
  74.   CFSTR_MIME_PJPEG            = 'image/pjpeg';
  75.   CFSTR_MIME_JPEG             = 'image/jpeg';
  76.   CFSTR_MIME_TIFF             = 'image/tiff';
  77.   CFSTR_MIME_X_PNG            = 'image/x-png';
  78.   CFSTR_MIME_BMP              = 'image/bmp';
  79.   CFSTR_MIME_X_ART            = 'image/x-jg';
  80.   CFSTR_MIME_AVI              = 'video/avi';
  81.   CFSTR_MIME_MPEG             = 'video/mpeg';
  82.   CFSTR_MIME_FRACTALS         = 'application/fractals';
  83.   CFSTR_MIME_RAWDATA          = 'application/octet-stream';
  84.   CFSTR_MIME_RAWDATASTRM      = 'application/octet-stream';
  85.   CFSTR_MIME_PDF              = 'application/pdf';
  86.   CFSTR_MIME_X_AIFF           = 'audio/x-aiff';
  87.   CFSTR_MIME_X_REALAUDIO      = 'audio/x-pn-realaudio';
  88.   CFSTR_MIME_XBM              = 'image/xbm';
  89.   CFSTR_MIME_QUICKTIME        = 'video/quicktime';
  90.   CFSTR_MIME_X_MSVIDEO        = 'video/x-msvideo';
  91.   CFSTR_MIME_X_SGI_MOVIE      = 'video/x-sgi-movie';
  92.   CFSTR_MIME_HTML             = 'text/html';
  93.  
  94.   { MessageId: MK_S_ASYNCHRONOUS                                              }
  95.   { MessageText: Operation is successful, but will complete asynchronously.   }
  96.   MK_S_ASYNCHRONOUS = $000401E8;
  97.   S_ASYNCHRONOUS    = MK_S_ASYNCHRONOUS;
  98.   {$EXTERNALSYM E_PENDING}
  99.   E_PENDING         = $8000000A;
  100.  
  101.   { WinINet and protocol specific errors are mapped to one of the following   }
  102.   { error which are returned in IBSC::OnStopBinding                           }
  103.   INET_E_INVALID_URL               : HResult = $800C0002;
  104.   INET_E_NO_SESSION                : HResult = $800C0003;
  105.   INET_E_CANNOT_CONNECT            : HResult = $800C0004;
  106.   INET_E_RESOURCE_NOT_FOUND        : HResult = $800C0005;
  107.   INET_E_OBJECT_NOT_FOUND          : HResult = $800C0006;
  108.   INET_E_DATA_NOT_AVAILABLE        : HResult = $800C0007;
  109.   INET_E_DOWNLOAD_FAILURE          : HResult = $800C0008;
  110.   INET_E_AUTHENTICATION_REQUIRED   : HResult = $800C0009;
  111.   INET_E_NO_VALID_MEDIA            : HResult = $800C000A;
  112.   INET_E_CONNECTION_TIMEOUT        : HResult = $800C000B;
  113.   INET_E_INVALID_REQUEST           : HResult = $800C000C;
  114.   INET_E_UNKNOWN_PROTOCOL          : HResult = $800C000D;
  115.   INET_E_SECURITY_PROBLEM          : HResult = $800C000E;
  116.   INET_E_CANNOT_LOAD_DATA          : HResult = $800C000F;
  117.   INET_E_CANNOT_INSTANTIATE_OBJECT : HResult = $800C0010;
  118.   INET_E_ERROR_FIRST               : HResult = $800C0002;
  119.   INET_E_ERROR_LAST                : HResult = $800C0010;
  120.                                      // (INET_E_CANNOT_INSTANTIATE_OBJECT)
  121.  
  122.   { These are for backwards compatibility with previous URLMON versions }
  123.   { Flags for the UrlDownloadToCacheFile                                                                    }
  124.   URLOSTRM_USECACHEDCOPY_ONLY = $1;   // Only get from cache
  125.   URLOSTRM_USECACHEDCOPY      = $2;   // Get from cache if available else download
  126.   URLOSTRM_GETNEWESTVERSION   = $3;   // Get new version only. But put it in cache too
  127.  
  128.   // GUIDs for interfaces declared in this unit
  129.   IID_IPersistMoniker: TGUID = (
  130.     D1:$79eac9c9;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  131.   IID_IBindProtocol: TGUID = (
  132.     D1:$79eac9cd;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  133.   IID_IBinding: TGUID = (
  134.     D1:$79eac9c0;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  135.   IID_IBindStatusCallback: TGUID = (
  136.     D1:$79eac9c1;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  137.   IID_IAuthenticate: TGUID = (
  138.     D1:$79eac9d0;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  139.   IID_HttpNegotiate: TGUID = (
  140.     D1:$79eac9d2;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  141.   IID_IWindowForBindingUI: TGUID = (
  142.     D1:$79eac9d5;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  143.   IID_ICodeInstall: TGUID = (
  144.     D1:$79eac9d1;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  145.   IID_IWinInetInfo: TGUID = (
  146.     D1:$79eac9d6;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  147.   IID_IHttpSecurity: TGUID = (
  148.     D1:$79eac9d7;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  149.   IID_IWinInetHttpInfo: TGUID = (
  150.     D1:$79eac9d8;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  151.   IID_IBindHost: TGUID = (
  152.     D1:$fc4801a1;D2:$2ba9;D3:$11cf;D4:($a2,$29,$00,$aa,$00,$3d,$73,$52));
  153.  
  154. type
  155.   PBindInfo = ^TBindInfo;
  156.   TBindInfo = packed record
  157.     cbSize: Longint;
  158.     szExtraInfo: PWideChar;  // e.g. string added to the URL string [range byte]
  159.     stgmedData: TStgMedium;  // e.g. put or post data
  160.     grfBindInfoF: DWORD;     // e.g. how meddata should be treaded
  161.     dwBindVerb: DWORD;       // e.g. put, post, ...
  162.     szCustomVerb: PWideChar; // e.g. custom verb
  163.     cbstgmedData: Longint;   // size of data in stgmedData
  164.   end;
  165.  
  166.   PRemBindInfo = ^TRemBindInfo;
  167.   TRemBindInfo = packed record
  168.     cbSize: Cardinal;
  169.     szExtraInfo: PWideChar;
  170.     grfBindInfoF: DWORD;
  171.     dwBindVerb: DWORD;
  172.     szCustomVerb: PWideChar;
  173.     cbstgmedData: DWORD;
  174.   end;
  175.  
  176.   PRemFormatEtc = ^TRemFormatEtc;
  177.   TRemFormatEtc = packed record
  178.     cfFormat: DWORD;
  179.     ptd: DWORD;
  180.     dwAspect: DWORD;
  181.     lindex: Longint;
  182.     tymed: DWORD;
  183.   end;
  184.  
  185.   PCIP_Status = ^TCip_Status;
  186.   TCIP_Status = (CIP_DISK_FULL, CIP_ACCESS_DENIED, CIP_NEWER_VERSION_EXISTS,
  187.     CIP_OLDER_VERSION_EXISTS, CIP_NAME_CONFLICT,
  188.     CIP_TRUST_VERIFICATION_COMPONENT_MISSING,
  189.     CIP_EXE_SELF_REGISTERATION_TIMEOUT, CIP_UNSAFE_TO_ABORT, CIP_NEED_REBOOT);
  190.  
  191.   IPersistMoniker = interface
  192.     ['{79eac9c9-baf9-11ce-8c82-00aa004ba90b}']
  193.     function GetClassID(out pClassID: TCLSID): HRESULT; stdcall;
  194.     function IsDirty: HRESULT; stdcall;
  195.     function Load(fFullyAvailable: BOOL; pimkName: IMoniker; pibc: IBindCtx;
  196.       grfMode: DWORD): HResult; stdcall;
  197.     function Save(pimkName: IMoniker; pibc: IBindCtx; fRemember: BOOL): HResult; stdcall;
  198.     function SaveCompleted(pimkName: IMoniker; pibc: IBindCtx): HRESULT; stdcall;
  199.     function GetCurMoniker(out ppimkName: IMoniker): HRESULT; stdcall;
  200.   end;
  201.  
  202.   IBinding = interface
  203.     ['{79eac9c0-baf9-11ce-8c82-00aa004ba90b}']
  204.     function Abort: HResult; stdcall;
  205.     function Suspend: HResult; stdcall;
  206.     function Resume: HResult; stdcall;
  207.     function SetPriority(nPriority: Longint): HResult; stdcall;
  208.     function GetPriority(out nPriority: Longint): HResult; stdcall;
  209.     function GetBindResult(out clsidProtocol: TGUID; out dwResult: Longint;
  210.       out szResult: PWideChar; var dwReserved: Longint): HResult; stdcall;
  211.   end;
  212.  
  213.   IBindProtocol = interface
  214.     ['{79eac9cd-baf9-11ce-8c82-00aa004ba90b}']
  215.     function CreateBinding(szUrl: PWideChar; pbc: IBindCtx;
  216.       out ppb: IBinding): HResult; stdcall;
  217.   end;
  218.  
  219.   IBindStatusCallback = interface
  220.     ['{79eac9c1-baf9-11ce-8c82-00aa004ba90b}']
  221.     function OnStartBinding(dwReserved: Longint; pib: IBinding): HResult;
  222.       stdcall;
  223.     function GetPriority(out pnPriority: Longint): HResult; stdcall;
  224.     function OnLowResource(reserved: Longint): HResult; stdcall;
  225.     function OnProgress(ulProgress: Longint; ulProgressMax: Longint;
  226.       ulStatusCode: Longint; szStatusText: PWideChar): HResult; stdcall;
  227.     function OnStopBinding( hRes: HResult; szError: PWideChar ): HResult;
  228.       stdcall;
  229.     function GetBindInfo(out grfBINDF: Longint; var pbindinfo: TBindInfo):
  230.       HResult; stdcall;
  231.     function OnDataAvailable(grfBSCF: Longint; dwSize: Longint;
  232.       var pformatetc: TFormatEtc; var pstgmed: TSTGMEDIUM): HResult; stdcall;
  233.     function OnObjectAvailable(const iid: TGUID; const punk: IUnknown): HResult;
  234.       stdcall;
  235.   end;
  236.  
  237.   IAuthenticate = interface
  238.     ['{79eac9d0-baf9-11ce-8c82-00aa004ba90b}']
  239.     function Authenticate(var phwnd: HWND; pszUserName,
  240.       pszPassword: PWideChar): HRESULT; stdcall;
  241.   end;
  242.  
  243.   IHttpNegotiate = interface
  244.     ['{79eac9d2-baf9-11ce-8c82-00aa004ba90b}']
  245.     function BeginningTransaction(szURL, szHeaders: PWideChar;
  246.       dwReserved: DWORD; out pszAdditionalHeaders: PWideChar): HRESULT; stdcall;
  247.     function OnResponse(dwResponseCode: DWORD; szResponseHeaders,
  248.       szRequestHeaders: PWideChar; out pszAdditionalRequestHeaders: PWideChar):
  249.       HResult; stdcall;
  250.   end;
  251.  
  252.   IWindowForBindingUI = interface
  253.     ['{79eac9d5-bafa-11ce-8c82-00aa004ba90b}']
  254.     function GetWindow(const guidReason: TGUID; out wnd: HWND): HResult; stdcall;
  255.   end;
  256.  
  257.   ICodeInstall = interface(IWindowForBindingUI)
  258.     ['{79eac9d1-baf9-11ce-8c82-00aa004ba90b}']
  259.     function OnCodeInstallProblem(ulStatusCode: Cardinal; szDestination,
  260.       szSource: PWideChar; dwReserved: DWORD): HResult; stdcall;
  261.   end;
  262.  
  263.   IWinInetInfo = interface
  264.     ['{79eac9d6-bafa-11ce-8c82-00aa004ba90b}']
  265.     function QueryOption(dwOption: DWORD; Buffer: Pointer; var pcbBuf: DWORD): HResult; stdcall;
  266.   end;
  267.  
  268.   IHttpSecurity = interface(IWindowForBindingUI)
  269.     ['{79eac9d7-bafa-11ce-8c82-00aa004ba90b}']
  270.     function OnSecurityProblem(dwProblem: DWORD): HRESULT; stdcall;
  271.   end;
  272.  
  273.   IWinInetHttpInfo = interface(IWinInetInfo)
  274.     ['{79eac9d8-bafa-11ce-8c82-00aa004ba90b}']
  275.     function QueryInfo(dwOption: DWORD; pBuffer: Pointer; var pcbBuf, pdwFlags,
  276.       pdwReserved: DWORD): HResult; stdcall;
  277.   end;
  278.  
  279.   IBindHost = interface
  280.     ['{fc4801a1-2ba9-11cf-a229-00aa003d7352}']
  281.     function CreateMoniker(szName: PWideChar; pBC: IBindCtx; out ppmk: IMoniker;
  282.       dwReserved: DWORD): HResult; stdcall;
  283.     function MonikerBindToStorage(pMk: IMoniker; pBC: IBindCtx;
  284.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj): HResult; stdcall;
  285.     function RemoteMonikerBindToStorage(pMk: IMoniker; pBC: IBindCtx;
  286.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj: IUnknown): HResult; stdcall;
  287.     function MonikerBindToObject(pMk: IMoniker; pBC: IBindCtx;
  288.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj): HResult; stdcall;
  289.     function RemoteMonikerBindToObject(pMk: IMoniker; pBC: IBindCtx;
  290.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj: IUnknown): HResult; stdcall;
  291.   end;
  292.  
  293. function CreateURLMoniker(pMkCtx: IMoniker; szURL: PWideChar;
  294.   out ppmk: IMoniker): HResult; stdcall;
  295. function GetClassURL(szURL: PWideChar; const pClsID: TCLSID): HResult; stdcall;
  296. function CreateAsyncBindCtx(reserved: DWORD; pBSCb: IBindStatusCallback;
  297.   pEFetc: IEnumFORMATETC; out ppBC: IBindCtx): HResult;
  298. function MkParseDisplayNameEx(pbc: IBindCtx; szDisplayName: PWideChar;
  299.   var pchEaten: Cardinal; out ppmk: IMoniker): HResult; stdcall;
  300. function RegisterBindStatusCallback(pBC: IBindCtx; pBSCb: IBindStatusCallback;
  301.   out ppBSCBPrev: IBindStatusCallback; dwReserved: DWORD): HResult; stdcall;
  302. function RevokeBindStatusCallback(pBC: IBindCtx; pBSCb: IBindStatusCallback): HResult; stdcall;
  303. function GetClassFileOrMime(pBC: IBindCtx; szFilename: PWideChar; pBuffer: Pointer;
  304.   cbSize: DWORD; szMime: PWideChar; dwReserved: DWORD; out pclsid: TCLSID): HResult; stdcall;
  305. function IsValidURL(pBC: IBindCtx; szURL: PWideChar; dwReserved: DWORD): HResult; stdcall;
  306. function CoGetClassObjectFromURL(const rCLASSID: TCLSID; szCODE: PWideChar;
  307.   dwFileVersionMS: DWORD; dwFileVersionLS: DWORD; szTYPE: PWideChar;
  308.   pBindCtx: IBindCtx; dwClsContext: DWORD; pvReserved: Pointer; const riid: TIID;
  309.   out ppv): HResult; stdcall;
  310.  
  311. { helper apis }
  312. function IsAsyncMoniker(pmk: IMoniker): HResult; stdcall;
  313. function CreateURLBinding(lpszUrl: PWideChar; pbc: IBindCtx;
  314.   out ppBdg: IBinding): HResult; stdcall;
  315.  
  316. function RegisterMediaTypesW(ctypes: Cardinal; rgszTypes: PWideChar;
  317.   const rgcfTypes: TClipFormat): HResult; stdcall;
  318. function RegisterMediaTypes(ctypes: Cardinal; rgszTypes: PChar;
  319.   const rgcfTypes: TClipFormat): HResult; stdcall;
  320. function FindMediaType(rgszTypes: PChar; rgcfTypes: TClipFormat): HResult; stdcall;
  321. function CreateFormatEnumerator(cfmtetc: Cardinal; const rgfmtetc: TFormatEtc;
  322.   out ppenumfmtetc: IEnumFormatEtc): HResult; stdcall;
  323. function RegisterFormatEnumerator(pBC: IBindCtx; pEFetc: IEnumFormatEtc;
  324.   reserved: DWORD): HResult; stdcall;
  325. function RevokeFormatEnumerator(pBC: IBindCtx; pEFetc: IEnumFormatEtc): HResult; stdcall;
  326. function RegisterMediaTypeClass(pBC: IBindCtx; ctypes: Cardinal;
  327.   rgszTypes: PChar; const rgclsID: TCLSID; reserved: DWORD): HResult; stdcall;
  328. function FindMediaTypeClass(pBC: IBindCtx; szType: PChar; out pclsID: TCLSID;
  329.   reserved: DWORD): HResult; stdcall;
  330. function UrlMkSetSessionOption(dwOption: DWORD; pBuffer: Pointer;
  331.   dwBufferLength: DWORD; dwReserved: DWORD): HResult; stdcall;
  332.  
  333. function HlinkSimpleNavigateToString(szTarget, szLocation,
  334.   szTargetFrameName: PWideChar; pUnk: IUnknown; pbc: IBindCtx;
  335.   pBSCb: IBindStatusCallback; grfHLNF, dwReserved: DWORD): HResult; stdcall;
  336. function HlinkSimpleNavigateToMoniker(pmkTarget: IMoniker; szLocation,
  337.   szTargetFrameName: PWideChar; pUnk: IUnknown; pbc: IBindCtx;
  338.   pBSCb: IBindStatusCallback; grfHLNF, dwReserved: DWORD): HResult; stdcall;
  339.  
  340. function URLOpenStreamA(p1: IUnknown; p2: PAnsiChar; p3: DWORD;
  341.   p4: IBindStatusCallback): HResult; stdcall;
  342. function URLOpenStreamW(p1: IUnknown; p2: PWideChar; p3: DWORD;
  343.   p4: IBindStatusCallback): HResult; stdcall;
  344. function URLOpenStream(p1: IUnknown; p2: PChar; p3: DWORD;
  345.   p4: IBindStatusCallback): HResult; stdcall;
  346.  
  347. function URLOpenPullStreamA(p1: IUnknown; p2: PAnsiChar; p3: DWORD;
  348.   p4: IBindStatusCallback): HResult; stdcall;
  349. function URLOpenPullStreamW(p1: IUnknown; p2: PWideChar; p3: DWORD;
  350.   p4: IBindStatusCallback): HResult; stdcall;
  351. function URLOpenPullStream(p1: IUnknown; p2: PChar; p3: DWORD;
  352.   p4: IBindStatusCallback): HResult; stdcall;
  353.  
  354.  
  355. function URLDownloadToFileA(p1: IUnknown; p2: PAnsiChar; p3: PAnsiChar; p4: DWORD;
  356.   p5: IBindStatusCallback): HResult; stdcall;
  357. function URLDownloadToFileW(p1: IUnknown; p2: PWideChar; p3: PWideChar; p4: DWORD;
  358.   p5: IBindStatusCallback): HResult; stdcall;
  359. function URLDownloadToFile(p1: IUnknown; p2: PChar; p3: PChar; p4: DWORD;
  360.   p5: IBindStatusCallback): HResult; stdcall;
  361.  
  362. function URLDownloadToCacheFileA(p1: IUnknown; p2: PAnsiChar; p3: PAnsiChar;
  363.   p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
  364. function URLDownloadToCacheFileW(p1: IUnknown; p2: PWideChar; p3: PWideChar;
  365.   p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
  366. function URLDownloadToCacheFile(p1: IUnknown; p2: PChar; p3: PChar;
  367.   p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
  368.  
  369. function URLOpenBlockingStreamA(p1: IUnknown; p2: PAnsiChar; out p3: IStream;
  370.   p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
  371. function URLOpenBlockingStreamW(p1: IUnknown; p2: PWideChar; out p3: IStream;
  372.   p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
  373. function URLOpenBlockingStream(p1: IUnknown; p2: PChar; out p3: IStream;
  374.   p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
  375.  
  376. function HlinkGoBack(pUnk: IUnknown): HResult; stdcall;
  377. function HlinkGoForward(pUnk: IUnknown): HResult; stdcall;
  378. function HlinkNavigateString(pUnk: IUnknown; szTarget: PWideChar): HResult; stdcall;
  379. function HlinkNavigateMoniker(pUnk: IUnknown; pmkTarget: IMoniker): HResult; stdcall;
  380.  
  381. implementation
  382.  
  383. const
  384.   UrlMonLib = 'URLMON.DLL';
  385.  
  386. function CoGetClassObjectFromURL;       external UrlMonLib name 'CoGetClassObjectFromURL';
  387. function CreateAsyncBindCtx;            external UrlMonLib name 'CreateAsyncBindCtx';
  388. function CreateFormatEnumerator;        external UrlMonLib name 'CreateFormatEnumerator';
  389. function CreateURLBinding;              external UrlMonLib name 'CreateURLBinding';
  390. function CreateURLMoniker;              external UrlMonLib name 'CreateURLMoniker';
  391. function FindMediaType;                 external UrlMonLib name 'FindMediaType';
  392. function FindMediaTypeClass;            external UrlMonLib name 'FindMediaTypeClass';
  393. function GetClassFileOrMime;            external UrlMonLib name 'GetClassFileOrMime';
  394. function GetClassURL;                   external UrlMonLib name 'GetClassURL';
  395. function HlinkGoBack;                   external UrlMonLib name 'HlinkGoBack';
  396. function HlinkGoForward;                external UrlMonLib name 'HlinkGoForward';
  397. function HlinkNavigateMoniker;          external UrlMonLib name 'HlinkNavigateMoniker';
  398. function HlinkNavigateString;           external UrlMonLib name 'HlinkNavigateString';
  399. function HlinkSimpleNavigateToMoniker;  external UrlMonLib name 'HlinkSimpleNavigateToMoniker';
  400. function HlinkSimpleNavigateToString;   external UrlMonLib name 'HlinkSimpleNavigateToString';
  401. function IsAsyncMoniker;                external UrlMonLib name 'IsAsyncMoniker';
  402. function IsValidURL;                    external UrlMonLib name 'IsValidURL';
  403. function MkParseDisplayNameEx;          external UrlMonLib name 'MkParseDisplayNameEx';
  404. function RegisterBindStatusCallback;    external UrlMonLib name 'RegisterBindStatusCallback';
  405. function RegisterFormatEnumerator;      external UrlMonLib name 'RegisterFormatEnumerator';
  406. function RegisterMediaTypeClass;        external UrlMonLib name 'RegisterMediaTypeClass';
  407. function RegisterMediaTypes;            external UrlMonLib name 'RegisterMediaTypes';
  408. function RegisterMediaTypesW;           external UrlMonLib name 'RegisterMediaTypesW';
  409. function RevokeBindStatusCallback;      external UrlMonLib name 'RevokeBindStatusCallback';
  410. function RevokeFormatEnumerator;        external UrlMonLib name 'RevokeFormatEnumerator';
  411. function URLDownloadToCacheFileA;       external UrlMonLib name 'URLDownloadToCacheFileA';
  412. function URLDownloadToCacheFileW;       external UrlMonLib name 'URLDownloadToCacheFileW';
  413. function URLDownloadToCacheFile;        external UrlMonLib name 'URLDownloadToCacheFileA';
  414. function URLDownloadToFileA;            external UrlMonLib name 'URLDownloadToFileA';
  415. function URLDownloadToFileW;            external UrlMonLib name 'URLDownloadToFileW';
  416. function URLDownloadToFile;             external UrlMonLib name 'URLDownloadToFileA';
  417. function UrlMkSetSessionOption;         external UrlMonLib name 'UrlMkSetSessionOption';
  418. function URLOpenBlockingStreamA;        external UrlMonLib name 'URLOpenBlockingStreamA';
  419. function URLOpenBlockingStreamW;        external UrlMonLib name 'URLOpenBlockingStreamW';
  420. function URLOpenBlockingStream;         external UrlMonLib name 'URLOpenBlockingStreamA';
  421. function URLOpenPullStreamA;            external UrlMonLib name 'URLOpenPullStreamA';
  422. function URLOpenPullStreamW;            external UrlMonLib name 'URLOpenPullStreamW';
  423. function URLOpenPullStream;             external UrlMonLib name 'URLOpenPullStreamA';
  424. function URLOpenStreamA;                external UrlMonLib name 'URLOpenStreamA';
  425. function URLOpenStreamW;                external UrlMonLib name 'URLOpenStreamW';
  426. function URLOpenStream;                 external UrlMonLib name 'URLOpenStreamA';
  427.  
  428. end.
  429.